インターネットに繋がらないときの5つのコマンド(Linux編)
「なぜかインターネットに繋がらない!」という時に便利なコマンドを紹介します。
ping
pingは指定したアドレスからの応答があるかどうかをチェックできるコマンドです。 本当にインターネットに繋がっていないのか、特定のソフトウェアの不具合なのかを切り分ける時に使います。
$ ping www.google.co.jp -c 3
PING www.google.co.jp (216.58.197.227) 56(84) bytes of data.
64 bytes from nrt13s49-in-f227.1e100.net (216.58.197.227): icmp_seq=1 ttl=54 time=6.15 ms
64 bytes from nrt13s49-in-f227.1e100.net (216.58.197.227): icmp_seq=2 ttl=54 time=5.94 ms
64 bytes from nrt13s49-in-f227.1e100.net (216.58.197.227): icmp_seq=3 ttl=54 time=6.34 ms
--- www.google.co.jp ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 5.943/6.148/6.348/0.165 ms
cオプションで回数を指定できます。指定しない場合はpingを送信し続けるのでCtrl-cで終了する必要があります。 パケットロス(%で表示されている)が発生している場合、接続出来ていません。
セキュリティのためにpingに応答しないサーバもあるので、Googleなどの有名どころにPingするのがコツです。
まとめ
- pingが上手く出来ている → ネットワークの問題ではない
- pingが上手く出来ていない → ネットワークの問題!次のコマンドに進む。
ifconfig
ネットワークの設定を確認するためのコマンドです。ここではIPアドレスが割り当てられているかを確認しましょう。 (以下の例では一部がXXXの伏せ字になっています。)
$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.4 netmask 255.255.255.0 broadcast 192.168.0.255
ether 52:54:0e:XX:XX:XX txqueuelen 1000 (Ethernet)
RX packets 284216981 bytes 105292149937 (98.0 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 58073843 bytes 46613813274 (43.4 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
コマンドを実行したときにinetという部分にIPアドレスが表示されていれば、IPアドレスの取得は出来ています。
新しいOSではip -a
コマンドを使う必要があるかも知れません。
正しいIPアドレス
普通は、以下のようになっているはずです。
- 192.168.(0~255).(1~254)
- 172.(16~31).(0~255).(1~254)
- 10.(0~255).(0~255).(1~254)
特殊な場合ですが、もしIPアドレスを取得しているならその値が設定されている必要があります。
まとめ
- 正しいIPアドレスが設定されている → 別のネットワーク設定に問題あり!次のコマンドに進む。
- 正しいIPアドレスが設定されていない → 別の機器でも確かめてみる
- やっぱりおかしい → IPアドレスを割り当てるDHCPという仕組みがおかしい。普通ルータがする仕事なので、ルータを再起動してみよう。
nslookup
IPアドレスが正しく設定されているのにインターネットに接続出来ない時には、DNSの設定間違いを疑います。 とりあえず以下のコマンドを実行してみましょう。
$ nslookup www.google.co.jp
Server: XXX.XXX.XXX.XXX
Address: XXX.XXX.XXX.XXX#53
Non-authoritative answer:
Name: www.google.co.jp
Address: 216.58.196.227
実行してみて、answerが表示されましたか?もしされなければ、以下のコマンドも試してみて下さい。
$ nslookup www.google.co.jp 8.8.8.8
まとめ
- どちらの結果もおかしい → 別のネットワーク設定に問題あり!次のコマンドに進む。
- 2つ目の結果は大丈夫 → DNSサーバの調子が悪いようです。デフォルトDNSサーバの設定を変更しましょう。(/etc/resolv.confなどを参照)
- 1つ目の結果は大丈夫 or どちらの結果も大丈夫 → インターネットには接続出来ているはずです。
routeコマンド
この辺りまで来ると、このネットワークトラブルは一筋縄では行かないです。とりあえずコマンドだけ紹介しておきましょう。
OSによっては、ip route show
が代替です。
$ route
カーネルIP経路テーブル
受信先サイト ゲートウェイ ネットマスク フラグ Metric Ref 使用数 インタフェース
default 192.168.0.1 255.255.255.255 U 0 0 0 eth0
たくさん出力されるとは思いますが、大事なのは”default”です。 この行のゲートウェイにルータのアドレスが設定されているかどうかが重要です。
まとめ
- ゲートウェイのアドレスがおかしい → ゲートウェイアドレスを設定し直そう!
- ゲートウェイのアドレスは正しい → 別のネットワーク設定に問題あり!次のコマンドに進む。
arpコマンド
このコマンドはIPアドレスとネットワークポートの対応付けを表示します。
OSによっては、ip n
が代替です。
ルータのIPアドレスが、ルータに繋がるポートに対応づけられているか確認しましょう。
以下の例では192.168.0.1(つまりgateway)がeth0に対応づけられています。
$ arp
Address HWtype HWaddress Flags Mask Iface
192.168.0.1 ether XX:XX:XX:XX:XX:XX C eth0
gateway ether XX:XX:XX:XX:XX:XX C eth0
まとめ
- 対応付けがおかしい → ネットワークサービスやPCそのものを再起動してみましょう
- 対応付けは正しい → 手詰まりです・・・
それでも解決しない時には
典型的なネットワークトラブルの枠を越えた問題が発生してしまっているようです。 専門家に見てもらう必要があります。自分で何とかしたいときにはRedhatのマニュアルなどが役立つでしょう。